/*
【题目】
请把一段纸条竖着放在桌子上，然后从纸条的下边向上方对折1次，压出折痕后展开。此时
折痕是凹下去的，即折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2
次，压出折痕后展开，此时有三条折痕，从上到下依次是下折痕、下折痕和上折痕。给定一
个输入参数N，代表纸条都从下边向上方连续对折N次，请从上到下打印所有折痕的方向。
例如：N=1时，打印：
down
N=2时，打印：
down
down
up

思路: 其实形成的是一棵满二叉树
n = 1:          down
               /    \
n = 2:       down     up
            /  \     /   \
n = 3:    down  up  down  up

left为down， right为up
中序遍历n层的树，即为结果
*/

const DOWN = true
const UP = false

/**
 *
 * @param {number} N
 */
function PaparFolding (N) {
  process(1, N, DOWN) // 从第一层根节点开始遍历
}

/**
 * 递归中序遍历过程
 * @param {number} level
 * @param {number} N
 * @param {boolean} position
 */
function process (level, N, position) {
  if (level > N) {
    // 已经到叶子节点下面的null了
    return
  }
  process(level + 1, N, DOWN) // left
  if (position === DOWN) { // cur
    console.log('down')
  } else {
    console.log('up')
  }
  process(level + 1, N, UP) // right
}

PaparFolding(2)
